Algoritmo No 3: (RR)
Round Robin (RR)
Cola de procesos listos tratada como cola FIFO circular
A cada proceso se le entrega CPU por un periodo de tiempo, llamado quantum
Proceso se ejecuta por la duración del quantum o hasta que pasa a bloqueado
Ejemplo P1 : 24 ms, P2 : 3ms, P3 : 3ms, quantum 4ms
Ventajas ?
Estupendo para procesos interactivos (sistemas de tiempo compartido)
RR (cont)
Desventajas
Valor del quantum muy importante en rendimiento de RR
Problemas si es muy chico?
Tiempo de overhead por cambio de contexto
Problemas si es muy grande?
Se acerca a FCFS
Recomendación
80% de tiempo de ejecución de procesos (cada requerimiento antes de bloquearse) debería ser mas cortas que quantum
Algoritmo No 4 : Prioridades
Asignar prioridades a procesos
Ejecutar proceso con mayor prioridad
Si hay procesos con igual prioridad, aplicar FCFS
SJF, prioridad es tiempo de próximo requerimiento
Ejemplo:
Proceso Tiempo Ejecución Prioridad
P1 10 3
P2 1 1
P3 2 4
P4 1 5
P5 5 2
Prioridades (cont)
Como asignar prioridades
Internamente por SO, en base a uso de recursos (memoria, archivos, etc)
Externamente (no por SO) de acuerdo a importancia de procesos
Espera indefinida
Si continuamente llegan procesos de alta prioridad, los de baja prioridad esperan indefinidamente
Solución Espera indefinida
Envejecimiento
aumentar prioridad como función acumulada en el tiempo
decrementar prioridad como función acumulada de tiempo de procesamiento
Combinando Algoritmos
En la práctica los sistemas actuales usan una combinación de estos algoritmos (RR, Prioridad, SJF)
Ejemplo: Múltiples colas retroalimentadas
Tiene jerarquía de colas
Tiene prioridades para ordenar las colas
Nuevos procesos entran a cola de mayor prioridad
Cada cola planificada con RR
Quantums son distintos en cada cola
Procesos se cambian de colas en base a historia
Múltiples Colas Retroalimentadas
Idea, separar procesos en base a sus necesidades de ejecución
Procesos interactivos están en las colas de mayor prioridad
Procesos que usan mucha CPU se cambian a colas de menor prioridad
Procesos que llevan mucho tiempo en el sistema se cambian a colas de mayor prioridad
Planificación en UNIX
Usa múltiples colas realimentadas
De acuerdo a tipo de proceso
procesos de tiempo compartido
procesos de sistema
Procesos de tiempo real
Planificación por prioridad entre distintas colas y RR dentro de cada cola
Procesos con alta prioridad siempre se ejecutan primero
Procesos con la misma prioridad se planifican con RR
Procesos cambian prioridad dinámicamente
Se incrementa si proceso hace E/S antes de terminar quantum
Se decrementa si proceso usa todo su quantum
Objetivo?
Premiar procesos interactivos
Típicamente usan CPU por periodos pequeños de tiempo
Planificador Linux
Soporta:
una CPU
SMP (Simultaneous Multi-Processors)
Multiprocesadores en un chip o no, cada uno con caches y compartiendo Memoria Principal
SMT (Simultaneous Multi-Threading)
Procesador con recursos adicionales para soportar hebras. Sistema con Memoria principal compartida
NUMA (Non- Uniform Memory Access)
Unico sistema usando mas de un nodo (una máquina con un procesador o un multiprocesador es decir con propia CPU o set de CPUs y memorias)
Planificador de CPU en Linux 2.4
2 algoritmos para planificación de procesos
Uno para procesos de tiempo compartido, en donde CPU se multiplexa en forma justa entre procesos
Una para procesos con requermientos de tiempo real, donde prioridades absolutas son más importantes que justicia
Algoritmo para procesos que comparten tiempo
Prioridades y créditos asociadas a proceso
Proceso con más créditos se ejecuta primero
A cada interrupción del timer se decrementan créditos de proceso en ejecución. Cuando llega a 0 se planifica el siguiente proceso
Cuando créditos de todos los procesos listos es 0, créditos se recalculan para todos los procesos (incluyendo los bloqueados)
créditos = (créditos/2) + prioridad
Algoritmo Planificador Linux 2.4 vs 2.6
Diferencias entre version 2.4 y 2.6
Algoritmos de 2.4 del orden O(n)
Tiempo ejecución varía linealmente al aumentar tamaño entrada
Algoritmos de 2.6 del orden O(1)
Tiempo ejecución constante independiente del número de tareas a ejecutar en sistema
Estructuras básicas en 2.6
Runqueues
Priority arrays
Algunos problemas mejorados en 2.6
Planificación de tareas de tiempo real (soft)
Mayor rapidez en atender este tipo de tareas
Algunos problemas para procesos que parecen interactivos (I/O-bound)
Procesos/hebras que usan mucho E/S considerados como interactivos
A veces están relacionados con BD no necesariamente interactivos
Procesos/hebras que son CPU-bound e I/O-bound pueden anular efectos de boost y penalidad de planificador
Mayor información
http://www.inf.udec.cl/~chernand/links/linux_cpu_scheduler.pdf
Resumen
Planificación de procesos puede influenciar fuertemente el rendimiento
Como?
Generalmente, múltiples objetivos tienen conflictos
Como?
Existen diversos algoritmos puros, pero normalmente los sistemas implementan lo bueno de varios
Página anterior | Volver al principio del trabajo | Página siguiente |